package de.haw.HES.Disposition.services;

import de.haw.HES.Datentypen.AuftragTyp;
import de.haw.HES.Datentypen.KundenTyp;
import de.haw.HES.Disposition.Lieferung;
import de.haw.HES.Disposition.Extern.TransportServiceProvider;
import de.haw.HES.Disposition.Extern.TransportServiceProviderKonnektor;
import de.haw.HES.Disposition.pub.DispositionAdapterService;
import de.haw.HES.base.PersistenceManager;

public class DispositionAdapterServiceImpl implements DispositionAdapterService {

	private PersistenceManager persistenceManager;
	private TransportServiceProvider externalKonnektor;
	private LieferungSerivce lieferungService;

	public void setLieferungService(LieferungSerivce lieferungService) {
		this.lieferungService = lieferungService;
	}

	public TransportServiceProvider getExternalKonnektor() {
		if (externalKonnektor == null) {
			externalKonnektor = new TransportServiceProviderKonnektor();
		}
		return externalKonnektor;
	}

	public void setExternalKonnektor(TransportServiceProvider externalKonnektor) {
		this.externalKonnektor = externalKonnektor;
	}

	public void setPersistenceManager(PersistenceManager myLieferungDAO) {
		this.persistenceManager = myLieferungDAO;
	}

	public void createDeliveryForOrder(AuftragTyp auftrag, KundenTyp kunde) {
		// TODO Auto-generated method stub

	}

	public boolean hasBeenDelivered(Integer id) {
		// List<Lieferung> lieferungen = new ArrayList<Lieferung>();
		// lieferungen = persistenceManager.find(new
		// Lieferung(),Lieferung.class.getName());
		// for(Lieferung current : lieferungen) {
		// int auftragsId = current.getAuftrag().getId();
		// if(id==auftragsId) {
		// lieferungService.updateDeliverance(current.getTransportauftrag());
		// if(current.getTransportauftrag().isLieferungErfolgt()) {
		// return true;
		// }
		// }
		// }
		Lieferung lieferung = lieferungService.getLieferung(id);
		lieferungService.updateDeliverance(lieferung.getTransportauftrag());
		if (lieferung.getTransportauftrag().isLieferungErfolgt()) {
			return true;
		}
		return false;
	}

}
